【レポート】GitHub Constellation Conference: 「ソフトウェア開発環境の継続的カイゼン」 #githubconstellation
はじめに
本記事はGitHub Constellation Conferenceのパネルディスカッション「ソフトウェア開発環境の継続的カイゼン」のレポートです。
レポート
スピーカーはヤフー株式会社の横山 賢太郎さん、株式会社富士通研究所の高橋 直人さん、株式会社サイバーエージェントの岩永 翔さん。
以下、敬称略です。
自己紹介
岩永: AbemaTVの共通基盤のエンジニアリーダーをしている。
高橋: 研究員、モノを作るより開発する環境を提供する立場。K5の開発リーダー。
横山: 開発ツールを担当する部署の部長。CI/CDの推進などを行っている。
現在のソフトウェア開発環境
高橋: 富士通研究所では個人が好きにやってる環境が多い。GitHubを知らない研究員や、CIを知らない人もいる。そういう人たちに対して、世の中のプラクティスを教育していきたいと思っている。逆にGitHubを使ってオープンソースのコントリビュートをしている人もいる。GHEは高価なためGitLabなどを使ってたりSubversionを使ってたりもする。デファクトスタンダードはGitHubだと思っているのでGitHubを推進したい。
横山: GitHubをソースコードのリポジトリで利用、開発者とデザイナーが全員使っている。CI/CDはScrewdriverというYahoo, Inc.が開発したツールをパイプラインとして利用。デプロイはChef。Yahoo! Japanはアメリカと深い繋がりがあるので、アメリカの文化やツールなどを積極的に取り込んでいる。
岩永: メディア部門はGHEに移行、一部github.comを使っているが基本的にGHEにまとめている。CIは以前はJenkinsだったがCircleCI。所属しているエンジニアリーダーが好きに決めていて、柔軟に運用しており、あえて統一していない。
カイゼン活動をどう進めてきたか
横山: 基本的に内製ツールを利用していたので、社外に情報がなく、新人が覚えるのに時間がかかる、という課題があった。面倒臭いところをラッピングするためにパイプラインツールを開発。また、日本的なやり方を変えて、アメリカの会社に追いつけるような意識改革を行った。道具を変えても道具を使いこなすためには文化が必要。文化をチームに取り込むための苦労をしてきた。開発もスクラムを取り入れたりしたが、スクラムの運用は結構苦労した。
岩永: SVNからGHEに切り替えた時が一番苦労した。SVNの頃には検索性の悪さや隣のチームの活動が見えないなどの課題があったが、各事業部の影響力のあるエンジニアが集まってGitHubを推進する運動が始まり、GitHubが分からない人をサポートするような文化が生まれ、今も継続している。使いたいというエンジニアの強いモチベーションが社内の仲間作りに繋がったと思う。
高橋: 社内で横串で情報共有できたり、新しく入ってきた人に優しい環境を作りたい。弊社はエンタープライズな会社なので文化を変えるのはなかなか大変。そんな中でも問題や課題に気づいてくれる人が徐々に潰してくれている。経理や法務などの面でネガティブな意見を言う部門の人たちを説得する活動を地道にやっている。
ソフトウェア開発環境の継続的カイゼンの目的は何か
横山: タイムトゥマーケット、使ってもらう人に早く届けることをずっと言い続けてきた。市場に合わせて変化していけることが重要。一方、エンジニア的にはチャレンジさせてもらえる回数を増やしてあげることが出来る。従来のやり方だとチャレンジの回数が減って成長に繋がらないし、チームでの仕事に繋がらない。チャンレジする場を用意してあげることが必要。
高橋: 研究所だからといって市場が遠いわけではない。研究成果を早く事業化するために、製品で使えるコードをどうやって書けばいいのかを他の人のコードを学べるような仕組みが必要。マーケットの変化に応じた対応を最短距離で行うための仕組みを常にカイゼンしていく必要がある。組織内外の人たちのより良い方法を学ぶことでそれが実現出来る。
岩永: サービスを世の中に素早く出していくためには、エンジニアの時間を増やしてあげることが大事。エンジニアの時間がクリエイティブの質、サービスの質に直結する。エンジニアの時間をサービスのために使ってもらえることがカイゼンの目的。
活動を進める上で見えてこた問題やハードル
岩永: これまでは目が届く小さな範囲でカイゼンしていたが、少しずつ大きくなり、目が届かないことが増えてくると、共通化が必ずしも最適解ではないことがある。子会社やサービスによって効率的なカイゼン手段が違う場合がある。個別の選択を柔軟に寄り添って許容してあげる仕組みが必要。
横山: チームの成長と個人の成長のバランス。チームが成長すると個人の優劣の差が明確になる。また、ワイワイしたアメリカっぽい開発スタイルを望んだが、日本的な引っ込み思案マインドで温度差が生まれたこともある。CI/CDのツールを提供する場合も、チームによって成長度合いが違って同じように使ってもらえないという課題もあった。
高橋: 要件を決めて外注するような、自分でコードを書いていない人が多い。また個人プレイの人が多く、コラボレーションを望まない人もいる。そういう人のマインドを変えられるかが課題。
横山: 研究者は成果が個人に付与されるし、研究内容が尖っているが故に同じことを別々の人が研究している場合もあるだろうから、コラボレーションして早く成果を出すようなマインドがあると面白いんじゃないか。
高橋: チームという概念が研究所では少ない。研究者はどうしても自分の研究に注力してしまうため、研究者をつなげるファシリテーターみたいな人がいると良いんじゃないかと思う。小さくても良いからコラボレーションを進めていければなとは思うが、コラボレーションのスタート地点に立てないのが課題。
岩永: 研究員の方の気持ちに寄り添ってコラボレーションを始めるための、最初の一歩を用意する人がいないと始まらない気がする。すごく難しい。
問題やハードルをどう乗り越えてきたか
岩永: 組織の成長によってエンジニアの成長が鈍化するのは良く無いが、一気に変化するのはうまくいか無い。カイゼンをスモールスタートでお試しできる期間を用意していて、その期間で実績が出たものを全体にフィードバックするようにしている。GHEへの乗り換えも有志が一部で始めて、その成果が全体の合意のもの広まった。まずは既成事実を作ってみんなに認めてもらう、そんな環境を作るのが大事。
高橋: 例えばCircleCIを入れる場合にどのくらいかかったのか?
岩永: 最初の検証はトントン進んだが、みんなが使ってくれるようになるのが難しい。そのための教育や周知などの準備が大変。しかしある程度使う人が増えれば、無理やりにでも使おうという空気が生まれる。
横山: チームの中のメンバー1人1人の個性に合わせて、パーソナリティに合わせた期待値を提示する。乱暴なやり方ではアメリカのチームに送り出してみたが、行くと大きく成長し、現地のやり方を吸収して戻って来る。マネージャーが言葉で伝えるより体験してもらったほうが早い。このやり方はスケールでき無いのが課題。社内に対するカンファレンスやなんでも相談などを実施し、ツールを使いたいというメンバーのヘルプを実施している。カイゼンのためのツールも、マイノリティからマジョリティへ利用層が移ることで、利用が加速する瞬間がある。
高橋: ビジネス部門に対しては、ツール導入にかかるコストがハードルになっている。頑張って説得していくしか無いと思っている。
まとめ
藤田: 今回のディスカッションが皆さんの学びになれば良いなと思う。カラーの違う会社様に登壇して頂いたのは、GitHubのコミュニティがHubとなって、皆さんがお互いに学び合い、日本のソフトウェア業界全体がレベルアップする、そんなお手伝いをGitHubはしていきたい。今後もこういったイベントに参加して頂きたい。
さいごに
どこの会社も苦労しながら進めているんだな、というのが実感できるディスカッションだったと思います。